sigmo_pluie <- function(W,lambda,decalage){
return(
1/(1+exp(-lambda*(W-decalage)))
)
}
max_W = 3000
W_values = seq(-max_W,max_W,by=10)
decalage = 0
# decalage = 500
K_G_pluie_max = 16 # t.ha-1
lambdas = seq(4,1.5,length=20)
lambdas = 10**-lambdas
{
palette <- rainbow(length(lambdas))
par(mfrow = c(1, 2))
plot.new()
legend("center", legend = paste("lambda=",round(lambdas,4),"pente=",round(lambdas/4,4)), col = palette, lty = 1,xpd = TRUE)
plot(
x=c(0),
y=c(0),
xlim=c(-1500,1500),
ylim = c(0,1),
xlab = "W", ylab = ""
)
for(i in 1:length(lambdas)){
grass = sigmo_pluie(W_values,lambdas[i],decalage = decalage)
lines(W_values, grass, col = palette[i])
abline(a=0.5,b=lambdas[i]/4,lty=2,col = palette[i])
}
abline(v=0,lty=2)
abline(h=K_G_pluie_max,lty=2)
}
# On veut qu'il y ait transition en l'espace de [0,3000] mm de pluie, donc on va restreindre nos lambdas à :
lambdas = lambdas[lambdas>0.0038]
lambdas
## [1] 0.005134833 0.006951928 0.009412050 0.012742750 0.017252105 0.023357215
## [7] 0.031622777
# donc en gros on va les faire aller de 0.005 à 0.06
# sachant que les régressions sur la figure de Braun 1972 nous ont donné des pentes,
# qu'on ramène à une fenêtre ylim = [0,1] :
pente1 = 0.0115/K_G_pluie_max
pente2 = 0.0275/K_G_pluie_max
# > pente1
# [1] 0.00071875
# > pente2
# [1] 0.00171875
# > pente1*0.6
# [1] 0.00043125
# > pente2*1.3
# [1] 0.002234375
# ok donc on va faire aller nos lambdas de 0.0005 à 0.0022 disons (quasi droite)
pentes = seq(0.00043,0.0022,length=20)
print(pentes)
## [1] 0.0004300000 0.0005231579 0.0006163158 0.0007094737 0.0008026316
## [6] 0.0008957895 0.0009889474 0.0010821053 0.0011752632 0.0012684211
## [11] 0.0013615789 0.0014547368 0.0015478947 0.0016410526 0.0017342105
## [16] 0.0018273684 0.0019205263 0.0020136842 0.0021068421 0.0022000000
print("pentes")
## [1] "pentes"
print(cbind(pentes,pentes > pente1, pentes < pente2))
## pentes
## [1,] 0.0004300000 0 1
## [2,] 0.0005231579 0 1
## [3,] 0.0006163158 0 1
## [4,] 0.0007094737 0 1
## [5,] 0.0008026316 1 1
## [6,] 0.0008957895 1 1
## [7,] 0.0009889474 1 1
## [8,] 0.0010821053 1 1
## [9,] 0.0011752632 1 1
## [10,] 0.0012684211 1 1
## [11,] 0.0013615789 1 1
## [12,] 0.0014547368 1 1
## [13,] 0.0015478947 1 1
## [14,] 0.0016410526 1 1
## [15,] 0.0017342105 1 0
## [16,] 0.0018273684 1 0
## [17,] 0.0019205263 1 0
## [18,] 0.0020136842 1 0
## [19,] 0.0021068421 1 0
## [20,] 0.0022000000 1 0
lambdas = 4*pentes
lambda1=4*pente1
lambda2=4*pente2
{
palette <- rainbow(length(lambdas))
par(mfrow = c(1, 2))
plot.new()
legend("center", legend = paste("lambda=",round(lambdas,4),"pente=",round(lambdas/4,4)), col = palette, lty = 1,xpd = TRUE)
plot(
x=c(0),
y=c(0),
xlim=c(-1500,1500),
ylim = c(0,1),
xlab = "W", ylab = ""
)
for(i in 1:length(lambdas)){
grass = sigmo_pluie(W_values,lambdas[i],decalage = decalage)
lines(W_values, grass, col = palette[i])
abline(a=0.5,b=lambdas[i]/4,lty=2,col = palette[i])
}
abline(b=pente1,lwd=3)
abline(b=pente2,lwd=3)
abline(v=0,lty=2)
abline(h=K_G_pluie_max,lty=2)
}
df_graphique = as.data.frame(matrix(nrow=4,ncol=2))
colnames(df_graphique) = c("pluie (mm yr-1)","biomasse (t.ha-1)")
df_graphique2 = df_graphique
df_graphique[1,] = c(400,2.3)
df_graphique[2,] = c(500,3)
df_graphique[3,] = c(600,4.2)
df_graphique[4,] = c(700,5.2)
df_graphique[5,] = c(750,6)
df_graphique[6,] = c(1000,8.75)
df_graphique2[1,] = c(400,2.3)
df_graphique2[2,] = c(500,3)
df_graphique2[3,] = c(600,4.3)
df_graphique2[4,] = c(700,6.5)
df_graphique2[5,] = c(800,9)
df_graphique2[6,] = c(900,12)
plot(df_graphique,
xlim=c(0,1500),
ylim=c(0,15)
)
lines(df_graphique2,col="blue")
plot(df_graphique2,
xlim=c(0,1500),
ylim=c(0,15),
col="blue"
)
# Avec des décalages :
W_values = seq(-1500,2000,by=10)
decalages = seq(0,1500,by=100)
for(decalage in decalages){
{
palette <- rainbow(length(lambdas))
par(mfrow = c(1, 2))
plot.new()
legend("center", legend = paste("lambda=",round(lambdas,4),"pente=",round(lambdas/4,4)), col = palette, lty = 1,xpd = TRUE)
plot(
x=c(0),
y=c(0),
xlim=c(0,3500),
ylim = c(0,1),
xlab = "W", ylab = "",
main = paste("decalage=",decalage)
)
for(i in 1:length(lambdas)){
grass = sigmo_pluie(W_values,lambda=lambdas[i],decalage = decalage)
lines(W_values+decalage, grass, col = palette[i])
abline(a=0.5,b=lambdas[i]/4,lty=2,col = palette[i])
}
abline(v=0,lty=2)
abline(h=K_G_pluie_max,lty=2)
lines(df_graphique[,"pluie (mm yr-1)"],df_graphique[,"biomasse (t.ha-1)"]/K_G_pluie_max,pch=1,
col="orange",lwd=3)
lines(df_graphique2[,"pluie (mm yr-1)"],df_graphique2[,"biomasse (t.ha-1)"]/K_G_pluie_max,pch=1,
col="deeppink",lwd=3)
print(paste("lambda1=",lambda1,"pente1=",pente1))
print(paste("lambda2=",lambda2,"pente2=",pente2))
}
}
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
Donc au final on restreint nos pentes entre 0.00043 et 0.0022. On restreint notre décalage entre 600 et 2400 Après si on rajoute un paramètre “a” dans un second temps, ça peut changer notre range du décalage. On rappelle que dans l’article pente1 = 0.0114 (bleu turquoise) et pente2 = 0.0275 (pente rose).
W_values = seq(-1500,2000,by=10)
decalages = seq(400,550,by=25)
for(decalage in decalages){
{
palette <- rainbow(length(lambdas))
par(mfrow = c(1, 2))
plot.new()
legend("center", legend = paste("lambda=",round(lambdas,4),"pente=",round(lambdas/4,4)), col = palette, lty = 1,xpd = TRUE)
plot(
x=c(0),
y=c(0),
xlim=c(0,3500),
ylim = c(0,1),
xlab = "W", ylab = "",
main = paste("decalage=",decalage)
)
for(i in 1:length(lambdas)){
grass = sigmo_pluie(W_values,lambdas[i],decalage = decalage)
lines(W_values+decalage, grass, col = palette[i])
abline(a=0.5,b=lambdas[i]/4,lty=2,col = palette[i])
}
abline(v=0,lty=2)
abline(h=K_G_pluie_max,lty=2)
lines(df_graphique[,"pluie (mm yr-1)"],df_graphique[,"biomasse (t.ha-1)"]/K_G_pluie_max,pch=1,
col="orange",lwd=3)
lines(df_graphique2[,"pluie (mm yr-1)"],df_graphique2[,"biomasse (t.ha-1)"]/K_G_pluie_max,pch=1,
col="deeppink",lwd=3)
print(paste("lambda1=",lambda1,"pente1=",pente1))
print(paste("lambda2=",lambda2,"pente2=",pente2))
}
}
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"
## [1] "lambda1= 0.002875 pente1= 0.00071875"
## [1] "lambda2= 0.006875 pente2= 0.00171875"